package org.ants.mvc.service;

import java.io.Serializable;
import java.util.List;

import org.tinygroup.jdbctemplatedslsession.daosupport.OrderBy;
import org.tinygroup.tinysqldsl.Pager;

public interface IBaseService<T, PK extends Serializable> {
	T add(T t);

	int edit(T t);

	int deleteByKey(PK pk);

	T getByKey(PK pk);

	int deleteByKeys(PK... pks);

	List<T> query(T t, OrderBy... orderArgs);

	Pager<T> queryPager(int start, int limit, T t, OrderBy... orderArgs);

	/**
	 * 批量插入(轮询)
	 * 
	 * @param objects
	 * @return
	 */
	int[] batchInsert(List<T> objects);

	/**
	 * 批量更新(轮询)
	 * 
	 * @param objects
	 * @return
	 */
	int[] batchUpdate(List<T> objects);

	/**
	 * 批量删除(轮询)
	 * 
	 * @param objects
	 * @return
	 */
	int[] batchDelete(List<T> objects);

	/**
	 * 批量插入(预编译方式,sql固定)
	 * 
	 * @param objects
	 * @return
	 */
	int[] preparedBatchInsert(List<T> objects);

	/**
	 * 批量更新(预编译方式,sql固定)
	 * 
	 * @param objects
	 * @return
	 */
	int[] preparedBatchUpdate(List<T> objects);

	/**
	 * 批量删除(预编译方式,sql固定)
	 * 
	 * @param objects
	 * @return
	 */
	int[] preparedBatchDelete(List<T> objects);

}